/**
 * Copyright (C) 2012 The SkyTvOS Project
 * <p/>
 * Version     Date           Author
 * ─────────────────────────────────────
 * 2013-10-15         CRuby
 */

package com.skyworth.badsdk;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import com.skyworth.framework.skysdk.logger.Logger;

/**
 * <p>Description:</p>
 * <p>记录下载信息文件的读写删除等操作</p>
 *
 * @author CRuby
 * @version V1.0.0
 * @ClassName RecordDownInfo
 * @date 2013-10-15
 */
public class RecordDownInfo {
    /**
     * Description:测试使用的下载文件路径
     */
    private static String locallocation = "E:/down";

    /**
     * Description:记录文件的命名规则： 下载文件的名字 + _record.txt <br/>
     * eg. "test.apk_record.txt" <br/>
     */
    private static String recordNameLast = "_record.txt";

    /**
     * 概述：删除下载信息的记录文件<br/>
     * 注意事项：参数为所下载的文件的绝对路径<br/>
     *
     * @param fileAbsolutionPath 所下载文件的绝对路径，不是记录文件的路径信息
     * @return boolean 返回是否删除成功
     * @date 2013-10-15
     */
    public static boolean deleteRecord(String fileAbsolutionPath) {
        if (null == fileAbsolutionPath || fileAbsolutionPath.equals("")) {
            return false;
        }
        File file = new File(fileAbsolutionPath + recordNameLast);
        if (file.exists()) {
            return file.delete();
        } else {
            return true;
        }
    }

    /**
     * 概述：读取下载文件的进度等相关信息<br/>
     * 注意事项：参数<br/>
     *
     * @param fileAbsolutionPath 所下载文件的绝对路径，不是记录文件的路径信息
     * @return SkyRecordInfo 下载文件的相关记录信息，主要是 已经下载的长度
     * @date 2013-10-15
     */
    public static SkyRecordInfo readRecord(String fileAbsolutionPath) {
        SkyRecordInfo info = new SkyRecordInfo();
        File file = new File(fileAbsolutionPath + recordNameLast);
        if (!file.exists())
            return info;
        try {
            FileInputStream in = new FileInputStream(file);
            try {
                byte[] buf = new byte[1024];
//                long size = in.available();
                in.read(buf, 0, 1024);
                String string = new String(buf);
                info = new SkyRecordInfo(string);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            in.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return info;
    }

    /**
     * 概述：写入下载记录<br/>
     * 注意事项：<br/>
     *
     * @param fileAbsolutionPath 所下载文件的绝对路径，不是记录文件的路径信息
     * @param content            写入文件的内容，SkyRecordInfo.toString() 即可
     * @date 2013-10-15
     */
    public static void writeRecord(String fileAbsolutionPath, String content) {
        try {
            FileOutputStream out = new FileOutputStream(new File(fileAbsolutionPath + recordNameLast));
            try {
                out.write(content.getBytes());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            out.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * 概述：测试函数，测试读取和写入下载文件的内容<br/>
     *
     * @param args void
     * @date 2013-10-15
     */
    public static void main(String[] args) {
        SkyRecordInfo info = new SkyRecordInfo();
        info.fileName = "xxxx";
        info.realLength = 777833;
        info.url = "http://translate.google.cn/?hl=en#zh-CN/en/%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96";
        writeRecord(locallocation, info.toString());
        Logger.i(readRecord(locallocation).toString());
        deleteRecord(locallocation);
    }
}
